﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.IO;


namespace Siser.Web.Models
{
    public class CrearPDF
    {

        public byte[] crearPDFAlarmas(ReporteAlarmas datos, string instalacion, List<Alarma> alarmas, List<Alarma> alarmaE, List<FallaMedicion> fallas)
        {
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            MemoryStream memoryStream = new MemoryStream();
            PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
            document.Open();
            Paragraph unParrafo = generar_cabecera_alarmas();
            document.Add(new Paragraph(" "));
            document.Add(unParrafo);
            document.Add(new Paragraph(" "));
            Paragraph fecha_periodo = generar_fecha_periodo(datos.fechaInicio.ToString(), datos.fechaFin.ToString());
            document.Add(fecha_periodo);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("INSTALACIÓN: " + instalacion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));


            document.Add(new Paragraph("Alarmas Radiológicas", FontFactory.GetFont("Arial", 7)));
            unParrafo.Font.SetStyle(Font.NORMAL);
            document.Add(new Paragraph(" "));
            int contador = 1;
            PdfPTable estructura = new PdfPTable(5);
            if (alarmas.Count > 0)
            {
                estructura.SetWidthPercentage(new float[] { 75, 75, 80, 75, 75 }, PageSize.A4);
                estructura.AddCell(new Paragraph("Fecha", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Hora", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Pieza", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Valor", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Nivel de alarma", FontFactory.GetFont("Arial", 7)));

                foreach (PdfPCell celda in estructura.Rows[0].GetCells())
                {
                    celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                    celda.HorizontalAlignment = 1;
                    celda.Padding = 3;
                }

                
                foreach (Alarma alarma in alarmas)
                {
                    PdfPCell celda1 = new PdfPCell(new Paragraph(alarma.Fecha.ToShortDateString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(alarma.Fecha.ToShortTimeString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(alarma.Pieza.Nombre, FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(alarma.ValorMedicion.ToString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda5 = new PdfPCell(new Paragraph(alarma.NivelAlarma.Nombre, FontFactory.GetFont("Arial", 7)));
                    celda1.HorizontalAlignment = contador;
                    celda2.HorizontalAlignment = contador;
                    celda3.HorizontalAlignment = contador;
                    celda4.HorizontalAlignment = contador;
                    celda5.HorizontalAlignment = contador;
                    estructura.AddCell(celda1);
                    estructura.AddCell(celda2);
                    estructura.AddCell(celda3);
                    estructura.AddCell(celda4);
                    estructura.AddCell(celda5);
                }
                document.Add(estructura);
            }
            else
            {
                document.Add(new Paragraph("No hay alarmas radiológicas en el periodo correspondiente", FontFactory.GetFont("Arial", 7)));
            }
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("Alarmas de Energía", FontFactory.GetFont("Arial", 7)));
            document.Add(new Paragraph(" "));

            if (alarmaE.Count > 0)
            {
                estructura = new PdfPTable(4);
                estructura.SetWidthPercentage(new float[] { 75, 75, 80, 75 }, PageSize.A4);
                estructura.AddCell(new Paragraph("Fecha", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Hora", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Pieza", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Estado Energía", FontFactory.GetFont("Arial", 7)));

                foreach (PdfPCell celda in estructura.Rows[0].GetCells())
                {
                    celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                    celda.HorizontalAlignment = 1;
                    celda.Padding = 3;
                }

                foreach (Alarma alarma in alarmaE)
                {
                    PdfPCell celda1 = new PdfPCell(new Paragraph(alarma.Fecha.ToShortDateString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(alarma.Fecha.ToShortTimeString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(alarma.Pieza.Nombre, FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(alarma.EstadoEnergia.Nombre, FontFactory.GetFont("Arial", 7)));
                    celda1.HorizontalAlignment = contador;
                    celda2.HorizontalAlignment = contador;
                    celda3.HorizontalAlignment = contador;
                    celda4.HorizontalAlignment = contador;
                    estructura.AddCell(celda1);
                    estructura.AddCell(celda2);
                    estructura.AddCell(celda3);
                    estructura.AddCell(celda4);
                }
                document.Add(estructura);
            }
            else
            {
                document.Add(new Paragraph("No hay alarmas de energía en el periodo correspondiente", FontFactory.GetFont("Arial", 7)));
            }
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("Fallas de Medición", FontFactory.GetFont("Arial", 7)));
            document.Add(new Paragraph(" "));

            if (fallas.Count > 0)
            {
                estructura = new PdfPTable(4);
                estructura.SetWidthPercentage(new float[] { 75, 75, 80, 120 }, PageSize.A4);
                estructura.AddCell(new Paragraph("Fecha", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Hora", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Pieza", FontFactory.GetFont("Arial", 7)));
                estructura.AddCell(new Paragraph("Falla", FontFactory.GetFont("Arial", 7)));

                foreach (PdfPCell celda in estructura.Rows[0].GetCells())
                {
                    celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                    celda.HorizontalAlignment = 1;
                    celda.Padding = 3;
                }

                foreach (FallaMedicion falla in fallas)
                {
                    SiserEntities db = new SiserEntities();
                    string st_pieza = (from pieza in db.Piezas where pieza.Id == falla.PiezaId select pieza.Nombre).Single();
                    PdfPCell celda1 = new PdfPCell(new Paragraph(falla.Fecha.ToShortDateString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda2 = new PdfPCell(new Paragraph(falla.Fecha.ToShortTimeString(), FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda3 = new PdfPCell(new Paragraph(st_pieza, FontFactory.GetFont("Arial", 7)));
                    PdfPCell celda4 = new PdfPCell(new Paragraph(falla.CodigoFalla.Nombre, FontFactory.GetFont("Arial", 7)));
                    celda1.HorizontalAlignment = contador;
                    celda2.HorizontalAlignment = contador;
                    celda3.HorizontalAlignment = contador;
                    celda4.HorizontalAlignment = contador;
                    estructura.AddCell(celda1);
                    estructura.AddCell(celda2);
                    estructura.AddCell(celda3);
                    estructura.AddCell(celda4);
                }
                document.Add(estructura);
            }
            else
            {
                document.Add(new Paragraph("No hay fallas de medición en el periodo correspondiente", FontFactory.GetFont("Arial", 7)));
            }
            // TODO: FINALIZAR DOCUMENTO 

            writer.CloseStream = false;
            document.Close();
            byte[] buf = new byte[memoryStream.Position];
            memoryStream.Position = 0;
            memoryStream.Read(buf, 0, buf.Length);
            return buf;
        }

        public byte[] crearPDF(string path,ReporteSEPRO DatosReporte, MemoryStream ms, MemoryStream ms1, string unidad, string fecha_generacion)
        {
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            string ruta = path;
            //string ruta = "e:\\reporte" + fecha_generacion + ".pdf";

            MemoryStream memoryStream = new MemoryStream();
            PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
            PdfWriter.GetInstance(document, new FileStream(ruta, FileMode.Create));
            document.Open();
            Paragraph unParrafo = generar_cabecera();
            document.Add(unParrafo);


            document.Add(new Paragraph(" "));

            Paragraph fecha_periodo = generar_fecha_periodo(DatosReporte.fechaInicio.ToString(), DatosReporte.fechaFin.ToString());//agregue tostring a las fechas
            document.Add(fecha_periodo);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("1.- ANTECEDENTES PUNTO MEDICIÓN INSTALACIÓN:", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable unaTabla1 = generar_esqueleto(DatosReporte.instalacion, DatosReporte.equipo_id,
                                                    DatosReporte.proceso, DatosReporte.detector, DatosReporte.calibracion, DatosReporte.mantencion, DatosReporte.verificacion, DatosReporte.estado);
            document.Add(unaTabla1);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("2.- NIVELES LIMITES DE RADIACIÓN:", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable tabla_niv_rad = generar_niveles_radiacion(DatosReporte.operacion, DatosReporte.investigacion, DatosReporte.intervencion, unidad);
            document.Add(tabla_niv_rad);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("3.- REGISTRO  NIVELES DE OPERACIÓN (uSv/h)", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable op1 = generar_registro_operacion1(DatosReporte.promedio, DatosReporte.maximo, DatosReporte.minimo, DatosReporte.desviacion, DatosReporte.varianza);
            document.Add(op1);
            document.Add(new Paragraph(" "));

            PdfPTable op2 = generar_registro_operacion2(DatosReporte.dosis, DatosReporte.distancia, DatosReporte.num_muestra, DatosReporte.diasNoOP, unidad);
            document.Add(op2);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            document.Add(new Paragraph("4.- GRAFICO FRECUENCIA MEDICIONES Y OPERACIÓN", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            Image unaImagen = GenerarImagenCEN(ms);
            document.Add(unaImagen);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));


            Image unaImagen1 = GenerarImagenIZ(ms1);
            document.Add(unaImagen1);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            document.Add(new Paragraph("5.- OBSERVACIONES Y EVENTOS", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.observacion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));


            document.Add(new Paragraph("6.- CONCLUSIONES", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.conclusion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));


            document.Add(new Paragraph("7.- RECOMENDACIONES", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.recomendacion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            writer.CloseStream = false;
            document.Close();
            byte[] buf = new byte[memoryStream.Position];
            memoryStream.Position = 0;
            memoryStream.Read(buf, 0, buf.Length);
            return buf;

        }
        public byte[] crearPDFNoOf(ReporteSEPRO DatosReporte, MemoryStream ms, MemoryStream ms1, string unidad, string fecha_generacion)
        {
            Document document = new Document(PageSize.A4, 50, 50, 25, 25);
            //string ruta = Path.Combine((ConfigurationManager.AppSettings["PathReporteFijo"]), "reporte" + fecha_generacion + ".pdf");

            MemoryStream memoryStream = new MemoryStream();
            PdfWriter writer = PdfWriter.GetInstance(document, memoryStream);
           // PdfWriter.GetInstance(document, new FileStream(ruta, FileMode.Create));
            document.Open();
            Paragraph unParrafo = generar_cabecera_noof();
            document.Add(unParrafo);


            document.Add(new Paragraph(" "));

            Paragraph fecha_periodo = generar_fecha_periodo(DatosReporte.fechaInicio.ToString(), DatosReporte.fechaFin.ToString());
            document.Add(fecha_periodo);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("1.- ANTECEDENTES PUNTO MEDICIÓN INSTALACIÓN:", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable unaTabla1 = generar_esqueleto(DatosReporte.instalacion, DatosReporte.equipo_id,
                                                    DatosReporte.proceso, DatosReporte.detector, DatosReporte.calibracion, DatosReporte.mantencion, DatosReporte.verificacion, DatosReporte.estado);
            document.Add(unaTabla1);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("2.- NIVELES LIMITES DE RADIACIÓN:", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable tabla_niv_rad = generar_niveles_radiacion(DatosReporte.operacion, DatosReporte.investigacion, DatosReporte.intervencion, unidad);
            document.Add(tabla_niv_rad);

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("3.- REGISTRO  NIVELES DE OPERACIÓN (uSv/h)", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            PdfPTable op1 = generar_registro_operacion1(DatosReporte.promedio, DatosReporte.maximo, DatosReporte.minimo, DatosReporte.desviacion, DatosReporte.varianza);
            document.Add(op1);
            document.Add(new Paragraph(" "));

            PdfPTable op2 = generar_registro_operacion2(DatosReporte.dosis, DatosReporte.distancia, DatosReporte.num_muestra, DatosReporte.diasNoOP, unidad);
            document.Add(op2);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            document.Add(new Paragraph("4.- GRAFICO FRECUENCIA MEDICIONES Y OPERACIÓN", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            Image unaImagen = GenerarImagenCEN(ms);
            document.Add(unaImagen);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));


            Image unaImagen1 = GenerarImagenIZ(ms1);
            document.Add(unaImagen1);
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));

            document.Add(new Paragraph("5.- OBSERVACIONES Y EVENTOS", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.observacion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));


            document.Add(new Paragraph("6.- CONCLUSIONES", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.conclusion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));


            document.Add(new Paragraph("7.- RECOMENDACIONES", FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(DatosReporte.recomendacion, FontFactory.GetFont("Arial", 8)));
            document.Add(new Paragraph(" "));

            document.Add(new Paragraph(" "));
            document.Add(new Paragraph(" "));
            document.Add(new Paragraph("DOCUMENTO DE USO INTERNO NO OFICIAL", FontFactory.GetFont("Arial", 8)));

            writer.CloseStream = false;
            document.Close();
            byte[] buf = new byte[memoryStream.Position];
            memoryStream.Position = 0;
            memoryStream.Read(buf, 0, buf.Length);
            return buf;

        }
        public static Image GenerarImagenIZ(MemoryStream ms)
        {
            //Generamos imágen
            Image imagen = Image.GetInstance(ms);
            imagen.Alignment = Element.ALIGN_CENTER;
            imagen.ScaleToFit(400f, 600f);//400*600
            return imagen;
        }
        public static Image GenerarImagenCEN(MemoryStream ms)
        {
            //Generamos imágen
            Image imagen = Image.GetInstance(ms);
            imagen.Alignment = Element.ALIGN_CENTER;
            imagen.ScaleToFit(400f, 600f);//400*600
            return imagen;
        }
        public static Paragraph generar_cabecera()
        {

            //Creamos un nuevo parrafo, por ejemplo el titulo de nuestro reporte
            //Y le damos algunas propiedades.

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 8);
            parrafo.Font.SetStyle(Font.BOLD);
            parrafo.Leading = 10;
            //parrafo.SpacingAfter = 0;
            //parrafo.SpacingBefore = 0;


            parrafo.Add("INFORME \r\n MEDICIONES RADIOLOGOCAS \r\n SISER-CCHEN \r\n Version 1.0");

            return parrafo;
        }
        public static Paragraph generar_cabecera_noof()
        {

            //Creamos un nuevo parrafo, por ejemplo el titulo de nuestro reporte
            //Y le damos algunas propiedades.

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 8);
            parrafo.Font.SetStyle(Font.BOLD);
            parrafo.Leading = 10;
            //parrafo.SpacingAfter = 0;
            //parrafo.SpacingBefore = 0;


            parrafo.Add("INFORME \r\n MEDICIONES RADIOLOGOCAS \r\n SISER-CCHEN \r\n Version 1.0 \r\n (Documento No Oficial) \r\n (uso interno)");

            return parrafo;
        }
        public static Paragraph generar_cabecera_alarmas()
        {
            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_CENTER;
            parrafo.Font = FontFactory.GetFont("Arial", 8);
            parrafo.Font.SetStyle(Font.BOLD);
            parrafo.Leading = 10;
            //parrafo.SpacingAfter = 0;
            //parrafo.SpacingBefore = 0;


            parrafo.Add("INFORME DE ALARMAS\r\nRADIOLÓGICAS Y DE MEDICIONES\r\nSISER-CCHEN\r\nVersion 1.0\r\n");

            return parrafo;
        }
        public static Paragraph generar_fecha_periodo(string fechaI, string fechaF)
        {

            //Creamos un nuevo parrafo, por ejemplo el titulo de nuestro reporte
            //Y le damos algunas propiedades.

            Paragraph parrafo = new Paragraph();

            parrafo.Alignment = Element.ALIGN_JUSTIFIED;
            parrafo.Font = FontFactory.GetFont("Arial", 8);
            parrafo.Font.SetStyle(Font.BOLD);
            parrafo.Leading = 10;
            parrafo.Add("FECHA REPORTE: " + DateTime.Now + "                                           FECHA PERIODO MEDICIÓN: " + fechaI + "al " + fechaF);

            return parrafo;
        }
        public static PdfPTable generar_esqueleto(string instalacion, string id, string proceso, string detector, string calibracion,
                                                    string mantencion, string verificacion, string estado)
        {
            SiserEntities db = new SiserEntities();
            int int_id = Int32.Parse(id);
            string st_equipo = (from equipo in db.Equipos where equipo.Id == int_id select equipo.Nombre).Single();
            PdfPTable estructura = new PdfPTable(8);
            estructura.SetWidthPercentage(new float[] { 75, 75, 75, 75, 75, 75, 75, 75 }, PageSize.A4);
            estructura.AddCell(new Paragraph("Instalacion", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Equipo", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Proceso", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Detector", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Fecha vencimiento \r\n Calibración", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Mantencion", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Verificacion", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Estado", FontFactory.GetFont("Arial", 9)));

            foreach (PdfPCell celda in estructura.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }
            PdfPCell celda1 = new PdfPCell(new Paragraph(instalacion, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda2 = new PdfPCell(new Paragraph(st_equipo, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda3 = new PdfPCell(new Paragraph(proceso, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda4 = new PdfPCell(new Paragraph(detector, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda5 = new PdfPCell(new Paragraph(calibracion, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda6 = new PdfPCell(new Paragraph(mantencion, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda7 = new PdfPCell(new Paragraph(verificacion, FontFactory.GetFont("Arial", 9)));
            PdfPCell celda8 = new PdfPCell(new Paragraph(estado, FontFactory.GetFont("Arial", 9)));
            celda1.HorizontalAlignment = 1;
            celda2.HorizontalAlignment = 1;
            celda3.HorizontalAlignment = 1;
            celda4.HorizontalAlignment = 1;
            celda5.HorizontalAlignment = 1;
            celda6.HorizontalAlignment = 1;
            celda7.HorizontalAlignment = 1;
            celda8.HorizontalAlignment = 1;

            estructura.AddCell(celda1);
            estructura.AddCell(celda2);
            estructura.AddCell(celda3);
            estructura.AddCell(celda4);
            estructura.AddCell(celda5);
            estructura.AddCell(celda6);
            estructura.AddCell(celda7);
            estructura.AddCell(celda8);

            return estructura;
        }
        public static PdfPTable generar_niveles_radiacion(string operacion, string investigacion, string intervencion, string unidad)
        {
            PdfPTable estructura = new PdfPTable(3);
            estructura.SetWidthPercentage(new float[] { 100, 100, 100 }, PageSize.A4);
            estructura.AddCell(new Paragraph("Registro \r\n" + unidad, FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Investigación \r\n" + unidad, FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Intervención \r\n" + unidad, FontFactory.GetFont("Arial", 9)));

            foreach (PdfPCell celda in estructura.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            PdfPCell celda1 = new PdfPCell(new Paragraph(operacion, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda2 = new PdfPCell(new Paragraph(investigacion, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda3 = new PdfPCell(new Paragraph(intervencion, FontFactory.GetFont("Arial", 10)));

            celda1.HorizontalAlignment = 1;
            celda2.HorizontalAlignment = 1;
            celda3.HorizontalAlignment = 1;


            estructura.AddCell(celda1);
            estructura.AddCell(celda2);
            estructura.AddCell(celda3);


            return estructura;
        }
        public static PdfPTable generar_registro_operacion1(string promedio, string maximo, string minimo, string desviacion, string varianza)
        {
            PdfPTable estructura = new PdfPTable(5);
            estructura.SetWidthPercentage(new float[] { 100, 100, 100, 100, 100 }, PageSize.A4);
            estructura.AddCell(new Paragraph("Promedio", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Maximo", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Minimo", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Desviacion \r\n Estandard", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Varianza", FontFactory.GetFont("Arial", 9)));

            foreach (PdfPCell celda in estructura.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            PdfPCell celda1 = new PdfPCell(new Paragraph(promedio, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda2 = new PdfPCell(new Paragraph(maximo, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda3 = new PdfPCell(new Paragraph(minimo, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda4 = new PdfPCell(new Paragraph(desviacion, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda5 = new PdfPCell(new Paragraph(varianza, FontFactory.GetFont("Arial", 10)));

            celda1.HorizontalAlignment = 1;
            celda2.HorizontalAlignment = 1;
            celda3.HorizontalAlignment = 1;
            celda4.HorizontalAlignment = 1;
            celda5.HorizontalAlignment = 1;


            estructura.AddCell(celda1);
            estructura.AddCell(celda2);
            estructura.AddCell(celda3);
            estructura.AddCell(celda4);
            estructura.AddCell(celda5);


            return estructura;
        }
        public static PdfPTable generar_registro_operacion2(string dosis, string distancia, string tot_datos, string diasNoOP, string unidad)
        {
            PdfPTable estructura = new PdfPTable(4);
            estructura.SetWidthPercentage(new float[] { 100, 100, 100, 100 }, PageSize.A4);
            estructura.AddCell(new Paragraph("Dosis \r\n Periodo \r\n" + unidad.TrimEnd('/', 'h'), FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Distancia \r\n Exclusion \r\n m", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("Nº Total Datos", FontFactory.GetFont("Arial", 9)));
            estructura.AddCell(new Paragraph("% \r\n fallas \r\n de Operación", FontFactory.GetFont("Arial", 9)));


            foreach (PdfPCell celda in estructura.Rows[0].GetCells())
            {
                celda.BackgroundColor = BaseColor.LIGHT_GRAY;
                celda.HorizontalAlignment = 1;
                celda.Padding = 3;
            }

            PdfPCell celda1 = new PdfPCell(new Paragraph(dosis, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda2 = new PdfPCell(new Paragraph("----", FontFactory.GetFont("Arial", 10)));
            PdfPCell celda3 = new PdfPCell(new Paragraph(tot_datos, FontFactory.GetFont("Arial", 10)));
            PdfPCell celda4 = new PdfPCell(new Paragraph(diasNoOP, FontFactory.GetFont("Arial", 10)));

            celda1.HorizontalAlignment = 1;
            celda2.HorizontalAlignment = 1;
            celda3.HorizontalAlignment = 1;
            celda4.HorizontalAlignment = 1;


            estructura.AddCell(celda1);
            estructura.AddCell(celda2);
            estructura.AddCell(celda3);
            estructura.AddCell(celda4);



            return estructura;
        }
    }
}